Many software applications (herein after also referred to as applications) such as SOA-based applications require processing of electronic messages (herein after referred to as messages) in the order in which they were sent to the application over a network from a source system (e.g. a client, another remote software application). Such software applications may be implemented applying the principles of the service-oriented architecture (SOA).
Basically, at present a way to guarantee that messages received at an application are processed in the required order is to have a single thread or process at the receiving application for processing one message at a time. In case of parallel processing, message (re-)ordering and/or sequencing across the parallel processing threads and/or processes of the application can be then no longer guaranteed.
Thus, there is a need to maintain ordering of messages received at a software application for processing without creating a bottleneck in the software application that can process only one message at a given time.
Currently computer systems have been developed that try to address this problem. The available systems, however, have limitations regarding capabilities (e.g. allow sequencing but do not support reordering), protocols (e.g. not support available electronic message communication protocols), and/or portability (e.g. require specific products for installation).
Hence, there is a need to provide systems and methods for addressing the above problems to enable sequencing and/or reordering of incoming messages to maintain ordering of the messages when processed in parallel without creating a bottleneck in the software application that can process only one message at a given time without limitations regarding capabilities, protocols, and/or portability.